19
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

IEでmargin:autoが効かない(センターに寄らない)

Last updated at Posted at 2016-05-04

詰まったのでメモ。
どこ調べてもtext-align:centerのこと言われますが、
自分はそれでは治りませんでした。。

1.不具合内容

IEで表示したときだけ一部の要素が真ん中に寄らない。

header
main
footer

とあって、mainだけ中央に寄らない。

1-1.IEのバージョン

2つで試しました。

OS IE version Result
Windows8.1 11.0.9600 中央に寄らない
Windows10 Edge     中央に寄る

1-2.ページの構造(html)

index.html
<header>
  <div class="center">
  </div>
  <nav class="center">
  </nav>
</header>
<main class="center">
  <!--  ★この領域がセンターに寄らない  -->
</main>
<footer>
  <div class="center">
  </div>
</footer>

1-3.ページの構造(css)

style.css
.center {
	width: 960px;
	margin:0px auto;
}

2.原因

bodyタグ内の1階層目には margin:0px auto; センター寄せができないみたい。
ちなみに text-align:center も効きませんでした。

3.対策

単純に2階層目にズラしました。

index.html
<header>
  <div class="center">
  </div>
  <nav class="center">
  </nav>
</header>
<main>
  <div class="center">
  <!--  ★header, footerのようにセンターに寄る!!  -->
  </div>
</main>
<footer>
  <div class="center">
  </div>
</footer>

4.原因

わからない(笑)

有識者の方々にコメントいただき、判明しました。
(myakura@githubさん、tsuyoshi_choさん、ありがとうございます!)

myakura@github さんより

IEでは「mainという名前のついた見知らぬ要素」として扱われています。
で、こうした要素のスタイルはdisplay: inlineとして扱われるので、
margin: 0 autoによるセンタリングがききません。

さらにtsuyosh_choさんより

コメントいただいていた別の方のIE向け別対策でも取り上げられていましたが、
IE11では、mainにブロック要素を指定しないと
デザインが崩れてしまうケースがあるみたいです。

Web屋さんは大変だなと痛感しました…
というわけで、別対策をば。

x.追記:別対策

別の対策がありました。

このmain要素に display:block; とするだけで解決です。
(本当はIE11にだけ適応するのがベストだと思います)

style.css
.center {
	width: 960px;
	margin:0px auto;
}

/* ★追加 */
main {
	display:block;
}
19
12
5

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
19
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?